Actualizado: 2023-07-20 16:38:07

MySQL tiene ya elementos para encriptar y desencriptar datos con una semilla.
Para casos muy especiales, puede ser necesario manejar esta posibilidad.
La instrucción es muy simple, la semilla debe estar registrada en el config_cliente.php (para el ejemplo "ar_mysql_encript_clave")

En el alta:

UPDATE a0usr_qsl_reporte
                                        SET  
                                        legajo_reporta=aes_encrypt(legajo_reporta,'$ar_mysql_encript_clave'),
                                        nombre_reporta=aes_encrypt(nombre_reporta,'$ar_mysql_encript_clave'),
                                        apellido_reporta=aes_encrypt(apellido_reporta,'$ar_mysql_encript_clave'),
                                        telefono_reporta=aes_encrypt(telefono_reporta,'$ar_mysql_encript_clave'),
                                        mail_reporta=aes_encrypt(mail_reporta,'$ar_mysql_encript_clave'),
                                        empresa_reporta=aes_encrypt(empresa_reporta,'$ar_mysql_encript_clave'),
                                        puesto_reporta=aes_encrypt(puesto_reporta,'$ar_mysql_encript_clave'),
                                        sector_reporta=aes_encrypt(sector_reporta,'$ar_mysql_encript_clave'),
                                        jefatura_reporta=aes_encrypt(jefatura_reporta,'$ar_mysql_encript_clave'),
                                        gerencia_reporta=aes_encrypt(gerencia_reporta,'$ar_mysql_encript_clave')


                                    WHERE  id='$clave'

En el uso:

$select_repo_encriptado = "SELECT aes_decrypt(legajo_reporta,'$ar_mysql_encript_clave') as legajo_reporta,
                                    aes_decrypt(nombre_reporta,'$ar_mysql_encript_clave') as nombre_reporta,
                                    aes_decrypt(apellido_reporta,'$ar_mysql_encript_clave') as apellido_reporta,
                                    aes_decrypt(telefono_reporta,'$ar_mysql_encript_clave') as telefono_reporta,
                                    aes_decrypt(mail_reporta,'$ar_mysql_encript_clave') as mail_reporta,
                                    aes_decrypt(empresa_reporta,'$ar_mysql_encript_clave') as empresa_reporta,
                                    aes_decrypt(puesto_reporta,'$ar_mysql_encript_clave') as puesto_reporta,
                                    aes_decrypt(sector_reporta,'$ar_mysql_encript_clave') as sector_reporta,
                                    aes_decrypt(jefatura_reporta,'$ar_mysql_encript_clave') as jefatura_reporta,
                                    aes_decrypt(gerencia_reporta,'$ar_mysql_encript_clave') as gerencia_reporta
                              FROM a0usr_qsl_reporte WHERE id='$clave'";
  $res_repo_encriptado = sql_query($select_repo_encriptado,$dbi);
  $v_encr = sql_fetch_array($res_repo_encriptado,$dbi);

  $v["legajo_reporta"] = $v_encr["legajo_reporta"];
  $v["nombre_reporta"] = $v_encr["nombre_reporta"];
  $v["apellido_reporta"] = $v_encr["apellido_reporta"];
  $v["telefono_reporta"] = $v_encr["telefono_reporta"];
  $v["mail_reporta"] = $v_encr["mail_reporta"];
  $v["empresa_reporta"] = $v_encr["empresa_reporta"];
  $v["puesto_reporta"] = $v_encr["puesto_reporta"];
  $v["sector_reporta"] = $v_encr["sector_reporta"];
  $v["jefatura_reporta"] = $v_encr["jefatura_reporta"];
  $v["gerencia_reporta"] = $v_encr["gerencia_reporta"];


Para el previsualizado:


$vdatos["legajo_reporta"] = $v_encr["legajo_reporta"];
$vdatos["nombre_reporta"] = $v_encr["nombre_reporta"];
$vdatos["apellido_reporta"] = $v_encr["apellido_reporta"];
$vdatos["telefono_reporta"] = $v_encr["telefono_reporta"];
$vdatos["mail_reporta"] = $v_encr["mail_reporta"];
$vdatos["empresa_reporta"] = $v_encr["empresa_reporta"];
$vdatos["puesto_reporta"] = $v_encr["puesto_reporta"];
$vdatos["sector_reporta"] = $v_encr["sector_reporta"];
$vdatos["jefatura_reporta"] = $v_encr["jefatura_reporta"];
$vdatos["gerencia_reporta"] = $v_encr["gerencia_reporta"];


Para el prebuscado, necesitamos reajustar lo que vemos y si lo usamos para buscar. Además, la función aes_decrypt() devuelve BINARY, por lo tanto debemos también convertir a latin1 el resultado de la función en el WHERE , para que los filtros no sean sensibles a mayúsculas, caracteres con tilde, Ñ, etc.

$array_campo_encritados["a.legajo_reporta"]= "aes_decrypt(legajo_reporta,'$ar_mysql_encript_clave') as legajo_reporta";
$array_campo_encritados["a.nombre_reporta"]= "aes_decrypt(nombre_reporta,'$ar_mysql_encript_clave') as nombre_reporta";
$array_campo_encritados["a.apellido_reporta"]= "aes_decrypt(apellido_reporta,'$ar_mysql_encript_clave') as apellido_reporta";
$array_campo_encritados["a.telefono_reporta"]= "aes_decrypt(telefono_reporta,'$ar_mysql_encript_clave') as telefono_reporta";
$array_campo_encritados["a.mail_reporta"]= "aes_decrypt(mail_reporta,'$ar_mysql_encript_clave') as mail_reporta";
$array_campo_encritados["a.empresa_reporta"]= "aes_decrypt(empresa_reporta,'$ar_mysql_encript_clave') as empresa_reporta";
$array_campo_encritados["a.puesto_reporta"]= "aes_decrypt(puesto_reporta,'$ar_mysql_encript_clave') as puesto_reporta";
$array_campo_encritados["a.sector_reporta"]= "aes_decrypt(sector_reporta,'$ar_mysql_encript_clave') as sector_reporta";
$array_campo_encritados["a.jefatura_reporta"]= "aes_decrypt(jefatura_reporta,'$ar_mysql_encript_clave') as jefatura_reporta";
$array_campo_encritados["a.gerencia_reporta"]= "aes_decrypt(gerencia_reporta,'$ar_mysql_encript_clave') as gerencia_reporta";

$array_campo_encritados_where["a.legajo_reporta"]= "CONVERT (aes_decrypt(legajo_reporta,'$ar_mysql_encript_clave') USING 'latin1') ";
$array_campo_encritados_where["a.nombre_reporta"]= "CONVERT (aes_decrypt(nombre_reporta,'$ar_mysql_encript_clave') USING 'latin1') ";
$array_campo_encritados_where["a.apellido_reporta"]= "CONVERT (aes_decrypt(apellido_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.telefono_reporta"]= "CONVERT (aes_decrypt(telefono_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.mail_reporta"]= "CONVERT (aes_decrypt(mail_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.empresa_reporta"]= "CONVERT (aes_decrypt(empresa_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.puesto_reporta"]= "CONVERT (aes_decrypt(puesto_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.sector_reporta"]= "CONVERT (aes_decrypt(sector_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.jefatura_reporta"]= "CONVERT (aes_decrypt(jefatura_reporta,'$ar_mysql_encript_clave') USING 'latin1')";
$array_campo_encritados_where["a.gerencia_reporta"]= "CONVERT (aes_decrypt(gerencia_reporta,'$ar_mysql_encript_clave') USING 'latin1')";

foreach ($array_campo_encritados as $key => $value) {
    $def_valor = str_replace($key,$value,$def_valor);
    $def_wher_pre_buscar= str_replace($key,$value,$def_wher_pre_buscar);
    $campo_extra= str_replace($key,$value,$campo_extra);
}
foreach ($array_campo_encritados_where as $key => $value) {
    $def_where2= str_replace($key,$value,$def_where2);
}



¿Le ha sido útil esta información?